package com.testing.sunnycommon.config;


import com.testing.sunnycommon.model.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//引入lombok中的slf4j，简单日志门面
@Slf4j
@RestControllerAdvice(basePackages = {"com.testing.sunnyclient.controller"})
public class SunnyAdminExceptionHandler {
    //应用到所有@RequestMapping注解的方法，在其抛出Exception异常时执行
    //定义全局异常处理，value属性可以过滤拦截指定异常，此处拦截所有的Exception
    @ExceptionHandler(Exception.class)
    //该注解用于根据返回状态码类型进行处理
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public Result<String> exception(Exception e) {
        log.error(e.getMessage(),e);
        //指定出现异常时，返回结果为Result.fail实现的格式
        return Result.fail(500,"服务器错误",e.getMessage());
    }
}